core: Ad ot_clear_gvariant(), use it
authorColin Walters <walters@verbum.org>
Tue, 22 Nov 2011 15:20:10 +0000 (10:20 -0500)
committerColin Walters <walters@verbum.org>
Tue, 22 Nov 2011 15:20:10 +0000 (10:20 -0500)
This saves us a conditional.

12 files changed:
src/daemon/ot-daemon.c
src/libostree/ostree-core.c
src/libostree/ostree-repo-file.c
src/libostree/ostree-repo.c
src/libotutil/ot-variant-utils.c
src/libotutil/ot-variant-utils.h
src/ostree/ot-builtin-compose.c
src/ostree/ot-builtin-fsck.c
src/ostree/ot-builtin-log.c
src/ostree/ot-builtin-pull.c
src/ostree/ot-builtin-rev-parse.c
src/ostree/ot-builtin-show.c

index d7793b791f78a4fab248d86674d254faaf3cf113..70448806099e7d87356bf15c11ee8c26816d1d4c 100644 (file)
@@ -113,8 +113,7 @@ op_return (OstreeDaemon          *self,
 
   ret = TRUE;
   operation_free (op);
-  if (args)
-    g_variant_unref (args);
+  ot_clear_gvariant (&args);
   return ret;
 }
 
index c7a1cb1343d05a4edf4234b9c9aca5f7bd3f454c..943c17e8e8ea26999129e30786afc815b5f167cd 100644 (file)
@@ -205,10 +205,8 @@ checksum_directory (GFile          *f,
  out:
   if (ret_checksum)
     g_checksum_free (ret_checksum);
-  if (dirmeta)
-    g_variant_unref (dirmeta);
-  if (packed)
-    g_variant_unref (packed);
+  ot_clear_gvariant (&dirmeta);
+  ot_clear_gvariant (&packed);
   return ret;
 }
 
@@ -305,8 +303,7 @@ checksum_nondirectory (GFile            *f,
  out:
   g_clear_object (&input);
   g_free (basename);
-  if (xattrs)
-    g_variant_unref (xattrs);
+  ot_clear_gvariant (&xattrs);
   if (content_sha256)
     g_checksum_free (content_sha256);
   return ret;
@@ -375,10 +372,8 @@ ostree_get_directory_metadata (GFile        *dir,
   *out_metadata = ret_metadata;
   ret_metadata = NULL;
  out:
-  if (ret_metadata)
-    g_variant_unref (ret_metadata);
-  if (xattrs)
-    g_variant_unref (xattrs);
+  ot_clear_gvariant (&ret_metadata);
+  ot_clear_gvariant (&xattrs);
   return ret;
 }
 
@@ -408,8 +403,7 @@ ostree_set_xattrs (GFile  *f,
       value_data = g_variant_get_fixed_array (value, &value_len, 1);
       
       loop_err = lsetxattr (path, (char*)name, (char*)value_data, value_len, XATTR_REPLACE) < 0;
-      
-      g_variant_unref (value);
+      ot_clear_gvariant (&value);
       if (loop_err)
         {
           ot_util_set_error_from_errno (error, errno);
@@ -453,10 +447,8 @@ ostree_parse_metadata_file (GFile                       *file,
   *out_variant = ot_util_variant_take_ref (ret_variant);
   ret_variant = NULL;
  out:
-  if (ret_variant)
-    g_variant_unref (ret_variant);
-  if (container != NULL)
-    g_variant_unref (container);
+  ot_clear_gvariant (&ret_variant);
+  ot_clear_gvariant (&container);
   return ret;
 }
 
@@ -628,12 +620,10 @@ ostree_pack_object (GOutputStream     *output,
  out:
   g_clear_object (&finfo);
   g_clear_object (&instream);
-  if (xattrs)
-    g_variant_unref (xattrs);
+  ot_clear_gvariant (&xattrs);
   if (pack_builder_initialized)
     g_variant_builder_clear (&pack_builder);
-  if (pack_variant)
-    g_variant_unref (pack_variant);
+  ot_clear_gvariant (&pack_variant);
   return ret;
 }
 
@@ -770,8 +760,7 @@ ostree_parse_packed_file (GFile            *file,
   in = NULL;
  out:
   g_clear_object (&in);
-  if (ret_metadata)
-   g_variant_unref (ret_metadata);
+  ot_clear_gvariant (&ret_metadata);
   return ret;
 }
 
@@ -906,10 +895,8 @@ unpack_file (GFile        *file,
     g_checksum_free (ret_checksum);
   g_clear_object (&in);
   g_clear_object (&out);
-  if (metadata)
-   g_variant_unref (metadata);
-  if (xattrs)
-    g_variant_unref (xattrs);
+  ot_clear_gvariant (&metadata);
+  ot_clear_gvariant (&xattrs);
   return ret;
 }
 
index c4ff123f1def58b561ab699fa2f6055c3e733e40..2f3106cc0ab0c05ac69793baab6b716d6972fbe0 100644 (file)
@@ -62,10 +62,8 @@ ostree_repo_file_finalize (GObject *object)
 
   self = OSTREE_REPO_FILE (object);
 
-  if (self->tree_contents)
-    g_variant_unref (self->tree_contents);
-  if (self->tree_metadata)
-    g_variant_unref (self->tree_metadata);
+  ot_clear_gvariant (&self->tree_contents);
+  ot_clear_gvariant (&self->tree_metadata);
   g_free (self->tree_contents_checksum);
   g_free (self->tree_metadata_checksum);
   g_free (self->commit);
@@ -194,12 +192,9 @@ do_resolve_commit (OstreeRepoFile  *self,
   root_contents = NULL;
 
  out:
-  if (commit)
-    g_variant_unref (commit);
-  if (root_metadata)
-    g_variant_unref (root_metadata);
-  if (root_contents)
-    g_variant_unref (root_contents);
+  ot_clear_gvariant (&commit);
+  ot_clear_gvariant (&root_metadata);
+  ot_clear_gvariant (&root_contents);
   return ret;
 }
 
@@ -231,7 +226,7 @@ do_resolve_nonroot (OstreeRepoFile     *self,
 
       files_variant = g_variant_get_child_value (self->parent->tree_contents, 2);
       self->index = g_variant_n_children (files_variant) + i;
-      g_variant_unref (files_variant);
+      ot_clear_gvariant (&files_variant);
 
       g_variant_get_child (container, i, "(&s&s&s)",
                            &name, &content_checksum, &metadata_checksum);
@@ -259,12 +254,9 @@ do_resolve_nonroot (OstreeRepoFile     *self,
 
   ret = TRUE;
  out:
-  if (container)
-    g_variant_unref (container);
-  if (tree_metadata)
-    g_variant_unref (tree_metadata);
-  if (tree_contents)
-    g_variant_unref (tree_contents);
+  ot_clear_gvariant (&container);
+  ot_clear_gvariant (&tree_metadata);
+  ot_clear_gvariant (&tree_contents);
   return ret;
 }
 
@@ -330,10 +322,8 @@ _ostree_repo_file_get_xattrs (OstreeRepoFile  *self,
   *out_xattrs = ret_xattrs;
   ret_xattrs = NULL;
  out:
-  if (ret_xattrs)
-    g_variant_unref (ret_xattrs);
-  if (metadata)
-    g_variant_unref (metadata);
+  ot_clear_gvariant (&ret_xattrs);
+  ot_clear_gvariant (&metadata);
   g_clear_object (&input);
   g_clear_object (&local_file);
   return ret;
@@ -356,8 +346,7 @@ _ostree_repo_file_tree_set_metadata (OstreeRepoFile *self,
                                      const char     *checksum,
                                      GVariant       *metadata)
 {
-  if (self->tree_metadata)
-    g_variant_unref (self->tree_metadata);
+  ot_clear_gvariant (&self->tree_metadata);
   self->tree_metadata = g_variant_ref (metadata);
   g_free (self->tree_metadata_checksum);
   self->tree_metadata_checksum = g_strdup (checksum);
@@ -436,9 +425,8 @@ _ostree_repo_file_get_checksum (OstreeRepoFile  *self)
       g_variant_get_child (files_variant, n,
                            "(@s&s)", NULL, &checksum);
     }
-
-  g_variant_unref (files_variant);
-  g_variant_unref (dirs_variant);
+  ot_clear_gvariant (&files_variant);
+  ot_clear_gvariant (&dirs_variant);
 
   return checksum;
 }
@@ -854,8 +842,7 @@ query_child_info_file_archive (OstreeRepo       *repo,
   ret = TRUE;
  out:
   g_free (buf);
-  if (metadata)
-    g_variant_unref (metadata);
+  ot_clear_gvariant (&metadata);
   g_clear_object (&local_file);
   g_clear_object (&input);
   return ret;
@@ -909,8 +896,7 @@ query_child_info_dir (OstreeRepo         *repo,
   
   ret = TRUE;
  out:
-  if (metadata)
-    g_variant_unref (metadata);
+  ot_clear_gvariant (&metadata);
   return ret;
 }
 
@@ -944,11 +930,11 @@ bsearch_in_file_variant (GVariant  *variant,
         n = m - 1;
       else
         {
-          g_variant_unref (child);
+          ot_clear_gvariant (&child);
           *out_pos = m;
           return TRUE;
         }
-      g_variant_unref (child);
+      ot_clear_gvariant (&child);
     }
 
   *out_pos = m;
@@ -972,7 +958,7 @@ remove_variant_child (GVariant *variant,
     {
       if (i != n)
         g_variant_builder_add_value (&builder, child);
-      g_variant_unref (child);
+      ot_clear_gvariant (&child);
     }
   g_variant_iter_free (iter);
   
@@ -998,7 +984,7 @@ insert_variant_child (GVariant  *variant,
       if (i == n)
         g_variant_builder_add_value (&builder, item);
       g_variant_builder_add_value (&builder, child);
-      g_variant_unref (child);
+      ot_clear_gvariant (&child);
     }
   g_variant_iter_free (iter);
   
@@ -1034,17 +1020,13 @@ tree_replace_contents (OstreeRepoFile  *self,
         tmp_dirs = g_variant_get_child_value (self->tree_contents, 3);
     }
 
-  if (self->tree_contents)
-    g_variant_unref (self->tree_contents);
+  ot_clear_gvariant (&self->tree_contents);
   self->tree_contents = g_variant_new ("(u@a{sv}@a(ss)@a(sss))", version, metadata,
                                        new_files ? new_files : tmp_files,
                                        new_dirs ? new_dirs : tmp_dirs);
 
-  g_variant_unref (metadata);
-  if (tmp_files)
-    g_variant_unref (tmp_files);
-  if (tmp_dirs)
-    g_variant_unref (tmp_dirs);
+  ot_clear_gvariant (&tmp_files);
+  ot_clear_gvariant (&tmp_dirs);
 }
 
 void
@@ -1074,8 +1056,8 @@ _ostree_repo_file_tree_remove_child (OstreeRepoFile  *self,
 
   tree_replace_contents (self, new_files_variant, new_dirs_variant);
 
-  g_variant_unref (files_variant);
-  g_variant_unref (dirs_variant);
+  ot_clear_gvariant (&files_variant);
+  ot_clear_gvariant (&dirs_variant);
 }
 
 void
@@ -1095,9 +1077,9 @@ _ostree_repo_file_tree_add_file (OstreeRepoFile  *self,
                                                 g_variant_new ("(ss)", name, checksum));
       g_variant_ref_sink (new_files_variant);
       tree_replace_contents (self, new_files_variant, NULL);
-      g_variant_unref (new_files_variant);
+      ot_clear_gvariant (&new_files_variant);
     }
-  g_variant_unref (files_variant);
+  ot_clear_gvariant (&files_variant);
 }
 
 void
@@ -1119,9 +1101,9 @@ _ostree_repo_file_tree_add_dir (OstreeRepoFile  *self,
                                                               metadata_checksum));
       g_variant_ref_sink (new_dirs_variant);
       tree_replace_contents (self, NULL, new_dirs_variant);
-      g_variant_unref (new_dirs_variant);
+      ot_clear_gvariant (&new_dirs_variant);
     }
-  g_variant_unref (dirs_variant);
+  ot_clear_gvariant (&dirs_variant);
 }
 
 int
@@ -1163,12 +1145,9 @@ _ostree_repo_file_tree_find_child  (OstreeRepoFile  *self,
       *out_container = ret_container;
       ret_container = NULL;
     }
-  if (ret_container)
-    g_variant_unref (ret_container);
-  if (files_variant)
-    g_variant_unref (files_variant);
-  if (dirs_variant)
-    g_variant_unref (dirs_variant);
+  ot_clear_gvariant (&ret_container);
+  ot_clear_gvariant (&files_variant);
+  ot_clear_gvariant (&dirs_variant);
   return i;
 }
 
@@ -1266,10 +1245,9 @@ _ostree_repo_file_tree_query_child (OstreeRepoFile  *self,
   g_clear_object (&ret_info);
   if (matcher)
     g_file_attribute_matcher_unref (matcher);
-  if (tree_child_metadata)
-    g_variant_unref (tree_child_metadata);
-  g_variant_unref (files_variant);
-  g_variant_unref (dirs_variant);
+  ot_clear_gvariant (&tree_child_metadata);
+  ot_clear_gvariant (&files_variant);
+  ot_clear_gvariant (&dirs_variant);
   return ret;
 }
 
index 6a5f035343a5016cf1e9cce38818c1fad85d56bd..545591dd9dae11cadcaec29ac8d5d49b016d6e07 100644 (file)
@@ -360,8 +360,7 @@ ostree_repo_resolve_rev (OstreeRepo     *self,
   ret_rev = NULL;
   ret = TRUE;
  out:
-  if (commit)
-    g_variant_unref (commit);
+  ot_clear_gvariant (&commit);
   g_free (tmp);
   g_free (tmp2);
   g_clear_object (&child);
@@ -629,8 +628,7 @@ write_gvariant_to_tmp (OstreeRepo  *self,
     close (fd);
   if (checksum)
     g_checksum_free (checksum);
-  if (serialized != NULL)
-    g_variant_unref (serialized);
+  ot_clear_gvariant (&serialized);
   g_free (dest_name);
   g_clear_object (&stream);
   return ret;
@@ -694,8 +692,7 @@ ostree_repo_load_variant_checked (OstreeRepo  *self,
   *out_variant = ret_variant;
   ret_variant = NULL;
  out:
-  if (ret_variant)
-    g_variant_unref (ret_variant);
+  ot_clear_gvariant (&ret_variant);
   return ret;
 }
 
@@ -737,8 +734,7 @@ import_directory_meta (OstreeRepo  *self,
   g_clear_object (&f_info);
   if (ret_checksum)
     g_checksum_free (ret_checksum);
-  if (dirmeta != NULL)
-    g_variant_unref (dirmeta);
+  ot_clear_gvariant (&dirmeta);
   return ret;
 }
 
@@ -973,7 +969,7 @@ parsed_directory_data_free (ParsedDirectoryData *pdata)
     return;
   parsed_tree_data_free (pdata->tree_data);
   g_free (pdata->metadata_sha256);
-  g_variant_unref (pdata->meta_data);
+  ot_clear_gvariant (&pdata->meta_data);
   g_free (pdata);
 }
 
@@ -1100,8 +1096,7 @@ import_parsed_tree (OstreeRepo    *self,
       g_variant_builder_clear (&files_builder);
       g_variant_builder_clear (&dirs_builder);
     }
-  if (serialized_tree)
-    g_variant_unref (serialized_tree);
+  ot_clear_gvariant (&serialized_tree);
   return ret;
 }
 
@@ -1164,7 +1159,7 @@ add_one_directory_to_tree_and_import (OstreeRepo   *self,
 
   if (dir_value)
     {
-      g_variant_unref (dir_value->meta_data);
+      ot_clear_gvariant (&dir_value->meta_data);
       dir_value->meta_data = dirmeta;
     }
   else
@@ -1398,8 +1393,7 @@ commit_parsed_tree (OstreeRepo *self,
  out:
   if (root_checksum)
     g_checksum_free (root_checksum);
-  if (commit)
-    g_variant_unref (commit);
+  ot_clear_gvariant (&commit);
   if (now)
     g_date_time_unref (now);
   return ret;
@@ -1429,8 +1423,7 @@ import_root (OstreeRepo           *self,
   *out_root = ret_root;
   ret_root = NULL;
  out:
-  if (root_metadata)
-    g_variant_unref (root_metadata);
+  ot_clear_gvariant (&root_metadata);
   if (root_meta_checksum)
     g_checksum_free (root_meta_checksum);
   parsed_directory_data_free (ret_root);
@@ -1514,8 +1507,7 @@ ostree_repo_commit_from_filelist_fd (OstreeRepo *self,
   if (ret_commit_checksum)
     g_checksum_free (ret_commit_checksum);
   g_free (current_head);
-  if (root_metadata)
-    g_variant_unref (root_metadata);
+  ot_clear_gvariant (&root_metadata);
   if (root_meta_checksum)
     g_checksum_free (root_meta_checksum);
   g_clear_object (&datain);
@@ -1686,8 +1678,7 @@ ostree_repo_load_variant (OstreeRepo *self,
   *out_variant = ret_variant;
   ret_variant = NULL;
  out:
-  if (ret_variant)
-    g_variant_unref (ret_variant);
+  ot_clear_gvariant (&ret_variant);
   g_clear_object (&f);
   return ret;
 }
@@ -1736,8 +1727,7 @@ checkout_one_directory (OstreeRepo  *self,
  out:
   g_clear_object (&dest_file);
   g_free (dest_path);
-  if (xattr_variant)
-    g_variant_unref (xattr_variant);
+  ot_clear_gvariant (&xattr_variant);
   return ret;
 }
 
index 026275b5c17c418526fab82984594e456ace570f..5b8bbf257f12452db39f0d726ac81a78605afe5b 100644 (file)
@@ -117,8 +117,7 @@ ot_util_variant_map (GFile *src,
   *out_variant = ret_variant;
   ret_variant = NULL;
  out:
-  if (ret_variant)
-    g_variant_unref (ret_variant);
+  ot_clear_gvariant (&ret_variant);
   if (mfile)
     g_mapped_file_unref (mfile);
   return ret;
index 57ce66328b5706408e32f55e95d772aa0b6b5617..69f31112bbf389ae7814fc8191276804a7844d5b 100644 (file)
 
 G_BEGIN_DECLS
 
+#define ot_clear_gvariant(a_v) do { \
+  if (*a_v)                         \
+    g_variant_unref (*a_v);         \
+  *a_v = NULL;                      \
+  } while (0);
+
 GHashTable *ot_util_variant_asv_to_hash_table (GVariant *variant);
 
 GVariant * ot_util_variant_take_ref (GVariant *variant);
index f22662da4de5942d997c782efbaeb2bb31565597..8e7f28583ff526d7ba745ff2d9d6d95f23271502 100644 (file)
@@ -198,8 +198,7 @@ ostree_builtin_compose (int argc, char **argv, const char *repo_path, GError **e
     g_variant_builder_clear (&commit_metadata_builder);
   if (context)
     g_option_context_free (context);
-  if (commit_metadata)
-    g_variant_unref (commit_metadata);
+  ot_clear_gvariant (&commit_metadata);
   g_clear_object (&repo);
   g_clear_object (&checkout);
   g_clear_object (&destf);
index c9593bb5bf6d00d0de28f84b82bd3957bd78459c..1cbd93e0a052e4639ecb6d9f235257d4268b3c07 100644 (file)
@@ -103,10 +103,8 @@ checksum_packed_file (OtFsckData   *data,
     g_checksum_free (ret_checksum);
   g_free (metadata_buf);
   g_clear_object (&in);
-  if (metadata)
-   g_variant_unref (metadata);
-  if (xattrs)
-    g_variant_unref (xattrs);
+  ot_clear_gvariant (&metadata);
+  ot_clear_gvariant (&xattrs);
   return ret;
 }
 
index fe3723e7c62b2b9606c4f7db8a586983dc7ba71c..41a1ae56dc1f7f0c250e2e54fdd5e63bf2075773 100644 (file)
@@ -85,8 +85,7 @@ ostree_builtin_log (int argc, char **argv, const char *repo_path, GError **error
       GVariant *commit_metadata = NULL;
       char *formatted_metadata = NULL;
       
-      if (commit)
-        g_variant_unref (commit);
+      ot_clear_gvariant (&commit);
       if (!ostree_repo_load_variant (repo, resolved_rev, &type, &commit, error))
         goto out;
 
@@ -101,8 +100,7 @@ ostree_builtin_log (int argc, char **argv, const char *repo_path, GError **error
       g_date_time_unref (time_obj);
       time_obj = NULL;
 
-      formatted_metadata = g_variant_print (commit_metadata, TRUE);
-      g_variant_unref (commit_metadata);
+      ot_clear_gvariant (&commit_metadata);
       formatted = g_strdup_printf ("commit %s\nSubject: %s\nDate: %s\nMetadata: %s\n\n",
                                    resolved_rev, subject, formatted_date, formatted_metadata);
       g_free (formatted_metadata);
@@ -147,8 +145,7 @@ ostree_builtin_log (int argc, char **argv, const char *repo_path, GError **error
   g_free (resolved_rev);
   if (context)
     g_option_context_free (context);
-  if (commit)
-    g_variant_unref (commit);
+  ot_clear_gvariant (&commit);
   g_clear_object (&repo);
   return ret;
 }
index 10c987bc611d4db76aa390e0252ec842c7ef4d77..012c094f601b9af2b4c0cb385cb2876e97a7e4bb 100644 (file)
@@ -220,12 +220,9 @@ store_tree_recurse (OstreeRepo   *repo,
 
   ret = TRUE;
  out:
-  if (tree)
-    g_variant_unref (tree);
-  if (files_variant)
-    g_variant_unref (files_variant);
-  if (dirs_variant)
-    g_variant_unref (dirs_variant);
+  ot_clear_gvariant (&tree);
+  ot_clear_gvariant (&files_variant);
+  ot_clear_gvariant (&dirs_variant);
   return ret;
 }
 
@@ -274,8 +271,7 @@ store_commit_recurse (OstreeRepo   *repo,
 
   ret = TRUE;
  out:
-  if (commit)
-    g_variant_unref (commit);
+  ot_clear_gvariant (&commit);
   return ret;
 }
                       
index 6868c10f6a365ce97496b75543b05f1595bc71ee..02dc0d75a74a77290e3ad3db50537e03db3600bf 100644 (file)
@@ -70,8 +70,7 @@ ostree_builtin_rev_parse (int argc, char **argv, const char *repo_path, GError *
   if (context)
     g_option_context_free (context);
   g_clear_object (&repo);
-  if (variant)
-    g_variant_unref (variant);
+  ot_clear_gvariant (&variant);
   g_free (formatted_variant);
   return ret;
 }
index ae6bd81f45e03711683655b436aa6875bbb76e4e..c524c7a21ed370e9c4be0a1e197e527277f6a0ff 100644 (file)
@@ -56,8 +56,7 @@ print_variant (GVariant *variant)
   g_print ("%s\n", formatted_variant);
 
   g_free (formatted_variant);
-  if (byteswapped)
-    g_variant_unref (byteswapped);
+  ot_clear_gvariant (&byteswapped);
 }
 
 static gboolean
@@ -78,8 +77,7 @@ do_print_variant_generic (const GVariantType *type,
 
   ret = TRUE;
  out:
-  if (variant)
-    g_variant_unref (variant);
+  ot_clear_gvariant (&variant);
   g_clear_object (&f);
   return ret;
 }
@@ -101,8 +99,7 @@ show_repo_meta (OstreeRepo  *repo,
 
   ret = TRUE;
  out:
-  if (variant)
-    g_variant_unref (variant);
+  ot_clear_gvariant (&variant);
   return ret;
 }
 
@@ -127,8 +124,7 @@ do_print_packfile (OstreeRepo  *repo,
  out:
   g_clear_object (&file);
   g_clear_object (&content);
-  if (variant)
-    g_variant_unref (variant);
+  ot_clear_gvariant (&variant);
   return ret;
 }
 
@@ -171,12 +167,10 @@ do_print_compose (OstreeRepo  *repo,
 
   ret = TRUE;
  out:
-  if (variant)
-    g_variant_unref (variant);
+  ot_clear_gvariant (&variant);
   if (viter)
     g_variant_iter_free (viter);
-  if (metadata)
-    g_variant_unref (metadata);
+  ot_clear_gvariant (&metadata);
   if (metadata_hash)
     g_hash_table_destroy (metadata_hash);
   return ret;